# 高阶函数map()
# 对传入的可迭代数据中的每个元素进行处理,返回一个新的迭代器
"""
map(func, *iterables)
功能:对传入的可迭代数据中的每个元素放入到函数中进行处理，返回一个新的迭代器
参数:
    func 函数自定义函数|内置函数
    iterables:可迭代的数据
返回值:迭代器

"""
# 把一个字符串数字的列表['1', '2', '3','4']转为整型的数字列表[1,2,3,4]
# 使用普通的处理方法（for遍历实现）
number_str_list = ['1', '2', '3', '4']
number_list = []

for i in number_str_list:
    number_list.append(int(i))
print(number_list)  # [1, 2, 3, 4]


# 使用map函数进行处理
def revert(num_str):
    return int(num_str)


number_str_list = ['1', '2', '3', '4']

iterator = map(revert, number_str_list)
print(list(iterator))  # [1, 2, 3, 4]

# (2) 将[1,2,3,4]内的每个元素变为其二次方，结果如[1,4,9,16]
# 普通方法（for遍历实现）
origin_list = [1, 2, 3, 4]
square_list = []

for i in origin_list:
    square_list.append(i ** 2)
print(square_list)


# 使用map函数调用自定义函数处理这个数据


def square(x):
    return x ** 2


ite = map(square, [1, 2, 3, 4])
print(list(ite))


# (3)['A', 'B', 'C', 'D'] 转为对应的Ascii值[65,66,67,68]
def to_ascii(x):
    return ord(x)


list_str = ['A', 'B', 'C', 'D']
ite = map(to_ascii, list_str)
print(list(ite))
